// 导出一个axios的实例  而且这个实例要有请求拦截器 响应拦截器
import store from "@/store";
import router from "@/router";
import axios from "axios";
import { Message } from "element-ui";
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
}); // 创建一个axios的实例
// 请求拦截器
service.interceptors.request.use((config) => {
  const token = store.getters.token;
  if (token) {
    config.headers["Authorization"] = "Bearer " + token;
  }
  return config;
});
// 响应拦截器
service.interceptors.response.use(
  (response) => {
    const { data, message, success, code } = response.data;
    // 业务逻辑正确
    if (success) {
      return data;
    } else {
      Message.error(message);
      // 业务逻辑错误
      return Promise.reject(message);
    }
  },
  // 请求错误
  async (error) => {
    if (
      error.response &&
      error.response.data &&
      error.response.data.code === 10002
    ) {
      Message.error("token过期，请重新登录");
      await store.dispatch("user/quitAction");
      router.push("/login");
    }
    return Promise.reject(error);
  }
);
export default service; // 导出axios实例
